<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 函数创建方式 

    // (1) 命名函数(声明式)
    // function fn(a, b) {
    //     return a + b;
    // }

    // (2) 匿名函数
    // a. 赋值式   => 将匿名函数存储在变量 数组 对象 事件
    // var fn = function (a, b) {
    //     return a + b;
    // }

    // var arr = [1, 2, 3, function (a, b) {
    //     return a + b;
    // }]

    // var obj = {
    //     a: 1,
    //     b: 2,
    //     sum: function () {
    //         console.log(this.a, this.b);
    //     }
    // }

    // document.onclick = function () {
    //     alert(111);
    // }

    // b. 自执行函数 (匿名函数的执行)
    // (function (a, b) {
    //     return a + b;
    // })(1, 2);
    // !function (a, b) {
    //     return a + b;
    // }(1, 2);
    // +function (a, b) {
    //     return a + b;
    // }(1, 2);
    // -function (a, b) {
    //     return a + b;
    // }(1, 2);


    // c. 构造函数创建
    var fn = new Function("a", "b", "return a + b;");
    console.log(fn);


    // 结论 => 函数也是一个特殊对象 => 引用类型







</script>

</html>